package cn.djb.day29;

import java.util.PriorityQueue;
import java.util.Queue;

/**
 * 我们把只包含质因子 2、3 和 5 的数称作丑数（Ugly Number）。求按从小到大的顺序的第 n 个丑数。
 */
class Solution_2 {


    public int nthUglyNumber(int n) {

        Queue<Integer> deque = new PriorityQueue<Integer>(Integer::compareTo);
        deque.add(1);

        for (int i = 1; i < n; i++) {
            Integer poll = deque.poll();


            if (!deque.contains(poll * 2) && poll <= Integer.MAX_VALUE/2) {
                deque.add(poll * 2);
            }
            if (!deque.contains(poll * 3) && poll <= Integer.MAX_VALUE/3) {
                deque.add(poll * 3);
            }
            if (!deque.contains(poll * 5) && poll <= Integer.MAX_VALUE/5) {
                deque.add(poll * 5);
            }

        }

        return deque.poll();
    }

    public static void main(String[] args) {
        Solution_2 solution_2 = new Solution_2();
        int i = solution_2.nthUglyNumber(1407);
        System.out.println(i);


    }
}